/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sql;

import java.io.Serializable;
import javax.enterprise.event.Observes;
import javax.inject.Singleton;
import datamodel.FiltradoDataModel;
import productos.qualifiers.EventoFiltrarProducto;
import sql.interfaces.FiltradoProductosSQLGeneratorInterface;

/**
 *
 * @author damfercer
 */
@Singleton

public class FiltradoProductosSQLGenerator implements FiltradoProductosSQLGeneratorInterface,Serializable{
    private FiltradoDataModel dataModel;

    @Override
    public String generateSQL(FiltradoDataModel filtradoDataModel) {
        StringBuilder sb=new StringBuilder();
        if(filtradoDataModel.getTemporadaFiltrado()!=null){
            sb.append(" AND producto.TEMPORADA=");
            sb.append(filtradoDataModel.getTemporadaFiltrado().getIdTemporada());
        }
        if(filtradoDataModel.getDFiltrado()!=null){
            sb.append(" AND producto.D=");
            sb.append(filtradoDataModel.getDFiltrado().getIdD());
        }
        if(filtradoDataModel.getCFiltrado()!=null){
            sb.append(" AND producto.C=");
            sb.append(filtradoDataModel.getCFiltrado().getIdC());
        }
        if(filtradoDataModel.getSFiltrado()!=null){
            sb.append(" AND producto.S=");
            sb.append(filtradoDataModel.getSFiltrado().getIdS());
        }
        if(filtradoDataModel.getSerieTallajeFiltrado()!=null){
            sb.append(" AND producto.SERIE_TALLAJE=");
            sb.append(filtradoDataModel.getSerieTallajeFiltrado().getIdSerieTallaje());
        }
        if(filtradoDataModel.getSexoFiltrado()!=null){
            sb.append(" AND producto.SEXO=");
            sb.append(filtradoDataModel.getSexoFiltrado().getIdSexo());
        }
        if(filtradoDataModel.getProveedorFiltrado()!=null){
            sb.append(" AND producto.PROVEEDOR=");
            sb.append(filtradoDataModel.getProveedorFiltrado().getIdProveedor());
        }
        if(filtradoDataModel.getActivoFiltrado()!=null){
            sb.append(" AND producto.ACTIVO=");
            sb.append(filtradoDataModel.getActivoFiltrado());
        }
        sb.append(" ORDER BY producto.DESCRIPCION,producto.COLOR");
        return sb.toString();
    }
    /**
     * @return the dataModel
     */
    public FiltradoDataModel getDataModel() {
        return dataModel;
    }

    /**
     * @param dataModel the dataModel to set
     */
    public void setDataModel(FiltradoDataModel dataModel) {
        this.dataModel = dataModel;
    }
    
    public void onFiltrado(@Observes @EventoFiltrarProducto FiltradoDataModel dataModel){
        setDataModel(dataModel);
    }

    @Override
    public String generateSQL() {
        return generateSQL(dataModel);
    }
    
}
